package com.inputabc.ct.v1.ui;

import javax.swing.*;
import java.awt.*;
import java.io.*;

/**
 * 帮助对话框
 */
public class HelpDialog extends JDialog {
    private JTextArea textArea;
    private JButton closeButton;
    
    // 帮助信息文件
    private static final String HELP_FILE = "使用说明.txt";
    
    /**
     * 创建帮助对话框
     * @param parent 父窗口
     */
    public HelpDialog(JFrame parent) {
        super(parent, "使用说明", true);
        
        // 初始化组件
        initComponents();
        
        // 加载帮助信息
        loadHelpText();
        
        // 设置对话框属性
        setSize(600, 500);
        setLocationRelativeTo(parent);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    }
    
    /**
     * 初始化组件
     */
    private void initComponents() {
        setLayout(new BorderLayout(10, 10));
        
        // 创建文本区域
        textArea = new JTextArea();
        textArea.setEditable(false);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        textArea.setFont(new Font("Dialog", Font.PLAIN, 14));
        textArea.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        
        // 添加滚动面板
        JScrollPane scrollPane = new JScrollPane(textArea);
        add(scrollPane, BorderLayout.CENTER);
        
        // 创建按钮面板
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        closeButton = new JButton("关闭");
        closeButton.addActionListener(e -> dispose());
        buttonPanel.add(closeButton);
        
        add(buttonPanel, BorderLayout.SOUTH);
    }
    
    /**
     * 加载帮助信息
     */
    private void loadHelpText() {
        try {
            File file = new File(HELP_FILE);
            
            // 如果文件不存在，创建默认内容
            if (!file.exists()) {
                createDefaultHelpFile();
            }
            
            // 读取文件内容
            StringBuilder content = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
            String line;
            
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\n");
            }
            
            reader.close();
            
            // 设置文本内容
            textArea.setText(content.toString());
            textArea.setCaretPosition(0);
            
        } catch (Exception e) {
            e.printStackTrace();
            textArea.setText("无法加载帮助信息。错误: " + e.getMessage());
        }
    }
    
    /**
     * 创建默认的帮助文件
     */
    private void createDefaultHelpFile() {
        try {
            File file = new File(HELP_FILE);
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
            
            writer.write("CT Cat 翻译工具使用说明\n");
            writer.write("====================\n\n");
            
            writer.write("1. 基本功能\n");
            writer.write("------------\n");
            writer.write("- 本软件为OCR翻译工具，可以捕获屏幕上的文字并进行翻译\n");
            writer.write("- 支持多种翻译方向：中英互译、中日互译、中韩互译等\n");
            writer.write("- 支持多种翻译引擎：有道翻译、百度翻译、谷歌翻译\n\n");
            
            writer.write("2. 主要操作\n");
            writer.write("------------\n");
            writer.write("- 通过右键菜单选择翻译方向和翻译引擎\n");
            writer.write("- 鼠标右键点击文本区域，可以打开上下文菜单\n");
            writer.write("- 使用Ctrl+Z撤销上一步操作\n");
            writer.write("- 使用Ctrl+加号/减号调整字体大小\n");
            writer.write("- Alt+鼠标拖动可以调整窗口大小\n\n");
            
            writer.write("3. 设置选项\n");
            writer.write("------------\n");
            writer.write("- 外观：可以设置字体、文字颜色、背景颜色、透明度和背景图片\n");
            writer.write("- 翻译：可以选择默认的翻译引擎和翻译方向\n");
            writer.write("- API密钥：可以设置各翻译引擎所需的API密钥\n\n");
            
            writer.write("4. 快捷键\n");
            writer.write("------------\n");
            writer.write("- Ctrl+A：全选\n");
            writer.write("- Ctrl+C：复制\n");
            writer.write("- Ctrl+Z：撤销\n");
            writer.write("- Ctrl+加号：放大字体\n");
            writer.write("- Ctrl+减号：缩小字体\n\n");
            
            writer.write("5. 历史记录\n");
            writer.write("------------\n");
            writer.write("- 通过菜单可以查看翻译历史记录\n");
            writer.write("- 历史记录包含原文、译文、翻译方向和使用的翻译引擎\n\n");
            
            writer.write("6. 注意事项\n");
            writer.write("------------\n");
            writer.write("- 使用翻译API需要设置相应的密钥\n");
            writer.write("- 有道翻译对文本长度有限制（不超过200字符）\n");
            writer.write("- 如遇到翻译问题，可以尝试更换翻译引擎\n");
            
            writer.close();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
} 